// http.js
/**
 * 引入axios库，并基于element-plus的ElMessage组件，以及自定义的ResponseInterface类型，配置和封装HTTP请求。
 */
import axios from 'axios';
import {ElMessage} from "element-plus";
import type {ResponseInterface} from "@/type/models";

export const API_BASE_URL: string = "http://localhost:8079" // 设置请求的基础URL
export const API = axios.create({
    baseURL: API_BASE_URL, // 设置基础URL
    timeout: 30000, // 请求超时时间设置为30秒
    headers: {
        'Content-Type': 'application/json' // 请求头设置为JSON格式
    }
});

// 添加响应拦截器，用于统一处理响应
API.interceptors.response.use(
    response => response,
);
// 添加响应拦截器，对请求成功统一输出
API.interceptors.response.use(
    (response) => {
        // 在这里可以对成功的响应进行统一处理
        console.log('请求成功。url: ', response.config.url, '-> data: ', response.data);
        const data: ResponseInterface = response.data
        if (data['code'] < 0) {
            ElMessage.error(data['msg']); // 如果返回码小于0，使用ElMessage显示错误信息
        }
        // 确保返回的是原响应对象或者你处理过的数据
        return response;
    },
    error => {
        // 对错误进行统一处理
        console.error('An error occurred:', error);
        return Promise.reject(error);
    }
);